package com.tz.marlon.web.login;

import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.google.code.kaptcha.Constants;
import com.tz.marlon.bean.User;
import com.tz.marlon.dao.user.IUserDao;
import com.tz.marlon.util.TmStringUtils;

@Controller
@RequestMapping("/login")
public class LoginController {

	@Autowired
	private IUserDao userDao;
	
	/**
	 * 登录实现
	 * 方法名：getLogin<BR>
	 * 创建人：Marlon <BR>
	 * 时间：2016年5月10日-下午4:19:08 <BR>
	 * @param request
	 * @return String<BR>
	 * @exception <BR>
	 * @since  1.0.0
	 */
	@ResponseBody
	@RequestMapping(method=RequestMethod.POST,value="/logined")
	public String getLogin(HttpServletRequest request) {
		String email = request.getParameter("email");
		String password = request.getParameter("password");
		if (TmStringUtils.isEmpty(email)) {
			return "email_null";
		}
		if (TmStringUtils.isEmpty(password)) {
			return "password_null";
		}
		String code = request.getParameter("code");
		if(TmStringUtils.isNotEmpty(code)){
			//获取session中的验证码
			String sessionCode = (String)request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);
			//如果输入的验证码和会话的验证码不一致的,提示用户输入有误
			if(TmStringUtils.isNotEmpty(sessionCode) && !code.equalsIgnoreCase(sessionCode)){
				return "code_error";
			}
		}
		//对密码进行解密
		password = TmStringUtils.md5Base64("marlon_"+password);
		User user = userDao.getLogin(email, password);
		//根据邮箱和密码查询，用户是否存在
		if(user!=null){//如果存在
			//将用户信息放入到会话中...
			request.getSession().setAttribute("user", user);
			request.getSession().setAttribute("userId", user.getId());
			return "success";
		}else{//如果不存在，代表邮箱和密码输入有误
			return "fail";
		}
	}
	
	/**
	 * 退出实现
	 * 方法名：logout<BR>
	 * 创建人：Marlon <BR>
	 * 时间：2016年5月10日-下午4:15:16 <BR>
	 * @param request
	 * @return String<BR>
	 * @exception <BR>
	 * @since  1.0.0
	 */
	@ResponseBody
	@RequestMapping(method=RequestMethod.POST,value="/logout")
	public String logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return "success";
	}
	
	/**
	 * 登录成功
	 * 方法名：loginSuccess<BR>
	 * 创建人：Marlon <BR>
	 * 时间：2016年5月10日-下午4:18:55 <BR>
	 * @param request
	 * @return User<BR>
	 * @exception <BR>
	 * @since  1.0.0
	 */
	@ResponseBody
	@RequestMapping(method=RequestMethod.POST,value="/loginsuccess")
	public User loginSuccess(HttpServletRequest request) {
		User user = (User)request.getSession().getAttribute("user");
		return user;
	}
}
